Dieser Abschnitt beschreibt technische Details zu ImageQuery, die für weitergehende Anpassungen gedacht sind. Die Informationen in diesem Abschnitt sind für fortgeschrittene Benutzer oder Administratoren gedacht. Endanwender werden diesen Abschnitt eher langweilig finden.
ImageQuery benötigt keinen Schreibzugriff auf das Programmverzeichnis. Alle benutzerspezifischen Anpassungen erfolgen in der Registry unter dem Wurzelschlüssel HKEY_CURRENT_USER oder unterhalb des Ordners für Anwendungsdaten des aktuellen Benutzers, der durch die Umgebungsvariable APPDATA festgelegt wird.
Falls die Umgebungsvariable APPDATA nicht auf einen gültigen Pfad zeigt (an den dann „\Midnight!Software\ImageQuery“) angehängt wird, werden die hier aufgelisteten Dateien weder gelesen noch geschrieben. Die Funktionalität für den Abfragepuffer und die Ergebnisaktionen steht dann nicht zur Verfügung.
Diese Datei enthält die Definitionen für benutzerdefinierte Ergebnisaktionen. Das Format der Datei ist das einer normalen INI-Datei. Jeder Abschnitt definiert eine Aktion. Hier ein Beispiel:
[Action42]
Menu=IrfanView
Program=C:\Programme\IrfanView\i_view32.exe
CmdLine=$filename
Shortcut=ALT+I
Ein Beispiel für die Definition einer Aktion
Der Name des Abschnitts (hier „Action42“) wird von ImageQuery jeweils dynamisch vergeben und sollte nicht geändert werden. Für die Definition des Tastenkürzels (shortcut) gelten folgende Regeln: erlaubte Umschaltnamen sind CTRL / ALT / SHIFT, danach ein Pluszeichen, danach der Name der Taste (erlaubt sind 0-9 und A-Z). Wird dies nicht eingehalten, kann das Programm unerwartet reagieren.
Enthält eine Liste mit Abfragen für den Abfragepuffer. Jede Zeile beginnt mit dem Namen der Abfrage, der dann in der Combobox erscheint. Danach folgt ein Gleichheitszeichen, danach der Text der Abfrage, wobei alle Zeilenschaltungen durch den vertikalen Strich („|“) ersetzt werden. Dies bedeutet natürlich auch, dass in einer Abfrage keine solchen „vertical bars“ vorkommen können. Hier ein Beispiel:
Select Name, Size, Caption|from c:\tmp\*.jpg|where Caption != ''
Ein Beispiel für eine Abfrage im Puffer
Diese Datei enthält benutzerspezifische Inhalte für die Feldliste. Falls diese Datei im Anwendungsdaten-Ordner nicht vorhanden ist, wird nach einer zentralen Datei im Programmordner von ImageQuery gesucht und diese verwendet.
ImageQuery legt seine Informationen unter folgendem Schlüssel in der Registrierung ab:
HKEY_CURRENT_USER\Software\Midnight!Software\ImageQuery\1.0
Folgende Werte sind derzeit vorhanden und können auch z.B.
über Gruppenrichtlinien gesetzt werden:
LastQuery |
REG_SZ |
Der Text der jeweils letzten Query |
ThumbnailWidth |
REG_DWORD |
Breite der Vorschaubilder in Pixel (sollte 160, 120 oder 90 sein) |
ThumbnailHeight |
REG_DWORD |
Höhe der Vorschaubilder in Pixel (sollte 120, 90 oder 66 sein) |
GeneratePreview |
REG_DWORD |
1 = Vorschau erzeugen, falls kein EXIF-Thumbnail (Vorsicht, sehr langsam) |
UseNullText |
REG_DWORD |
1 = Den Inhalt von NullText verwenden |
NullText |
REG_SZ |
Ersatztext für Nullwerte (nicht vorhandene Metadatenfelder) |
DontAskOnExit |
REG_DWORD |
1 = Beim Beenden nicht nachfragen |
RefinementLimit |
REG_DWORD |
Anzahl der maximalen Treffer, bevor eine Abfrage abgebrochen wird, falls EnforceRefinement auf 1 gesetzt wurde |
EnforceRefinement |
REG_DWORD |
1 = Abfragebegrenzung aktiv (s. RefinementLimit) |
QueryFontFace |
REG_SZ |
Schriftartname |
QueryFontSize |
REG_DWORD |
Schriftartgöße |
ResultFontFace |
REG_SZ |
Schriftartname |
ResultFontSize |
REG_DWORD |
Schriftartgröße |
ResultViewStyle |
REG_SZ |
Detail = Spaltendarstellung |
Liste der Werte in der Registry
Hier finden Sie weitere Informationen zur internen Arbeitsweise von ImageQuery. Da ich die interne Dokumentation und die Codekommentare alle in Englisch schreibe, sind die hier eingefügten Kopien ebenfalls Englisch. Da es sich um technische Internas handelt, gehe ich einfach davon aus, dass alle, die mit dieser Information etwas anfangen könnten, auch Englisch können. :-)
ImageQuery
can be localized for other languages. In contrast to other freeware apps, you
can also adjust layout and sizing of controls to make the text fit into place.
All language files hasve to be stored in a subfolder under the ImageQuery
application folder. This folder has to be named “Lang”.
Language
files are simple text files with an INI-file layout. The section names define
the forms, while key name specify controls on a form. Names are
self-explanatory. Additionally you may want to check the German and English
localization file. The language file has to be named according to the short
country codes for Windows locales plus the extension “.lng” (e.g. en-us.lng for
English, es-es.lng for spanish-
You can
have comments in the file. All lines starting with a semi-colon “;” are
considered comments and ignored.
Languages
may be changed at run-time without problem. You may start the program with a
given locale by providing the command line option /lcid:<code>, where
<code> is the LCID number for a given language in decimal, e.g. 1031 for
de-de (German-Germany) or 1033 for en-us (English-United States).
The author
would like to receive a copy of you translation file to provide it for download
to other users. You can of course provide a comment section in the beginning of
the file stating your name and eMail-Adress and/or web link to show that you
did all the work.
ImageQuery
tries to detect if a file really is a JPEG image before processing it. This
will prevent program crashes (if you accidentally use a file mask like *.doc)
and allows you to use different extensions or file masks (like *.jp*). To
qualify for a valid JPEG image,
•
the files has to start with 0xFF, 0xD8.
•
the JFIF segment marker 0xFF, 0xE0 must be found.
•
the Image data marker 0xFF, 0xDB must be found.
Note: the specifications avialabe do state that every
valid JPG or DCF (digital camera format) file has to end with the end marker
sequence 0xFF, 0xD9 as the last two bytes. While the majority of image files I
encountered during testing follwed that rule, a remarkable number of files did
not. Instead they padded the file after the end marker to some border (mostly
the next 256 byte). Therefore I decided not to test for the end marker, as you
may miss some image files during searching. Any comments or additional
information on that subject would be appreciated.